The first CS 320 quiz will be Monday 6/3 in the same lecture room.
The exam will consist of 4 problems, and you will will be required to eliminate one of them, leaving 3 to do for full credit. You may not improve your score by doing all four. If you do not eliminate a problem, I will grade problems 1 through 3.
It will cover lectures 2 - 7 (up through the material on curried functions), and Hutton chapters 3, 4, 5, 7.1-7.3, 7.5. BUT, there will not be any problems on higher-order programming paradigms (from lecture 6), since we haven't practiced them.
Problems on the exam will be similar to homework problems (both analytical and code) but adapted (usually, simplified and shortened) to work as one of 3 problems on a 1 hour exam. Most problems will have multiple parts.
I will attempt to cover broadly the range of material (e.g., you won't have 4 questions about polymorphic types). You will have 2 analytical problems, and 2 Haskell coding problems.
The coding questions will be graded with an eye towards your understanding of the concept, not the exact details of Haskell syntax; if there is anything about tuples and lists I will provide versions using "BareBones" syntax and standard syntax, and you may use either one in your answer (practice problems are also provided in each style).
You will not have any questions about Python, Java, or C. The material in lecture and the practice problems is intended to connect Haskell concepts with what you already know in these languages.
Here are practice problems on various topics we have covered; these are a work in prgress and NOT comprehensive, and I did not repeat exactly the same kind of examples I showed in lecture. Having a set of practice problems here does not mean that that topic is more important for the exam than a topic for which there are no practice problems (hopefully in time I will cover all topics equally). They are completely optional, and feel free to skip if they seem too easy, or raise for discussion on Piazza if they are hard.
Click on the links below to access the practice problems:
1. BareBones Haskell: Constructing Data, Defining Functions, Rewriting to Calculate Result Values
2A. BareBones Haskell: Types and type checking.
2B. BareBones Haskell: Polymorphic Types and Type Checking.
3. Understanding let expressions and lambda expressions: scope of local variables in Python and Java;. (This is important for general understanding, but there will be no problems in the exam about Java or Python.)